Release 10.1A: OpenEdge Development:
Debugging and Troubleshooting
Logging levels for dynamic objects
There are two logging levels supported for
DynObjectsentry types: 2 (Basic) and 3 (Verbose). Setting logging to 4 (Extended), logs information as for 3 (Verbose).Basic logging level (2)
The log entries for logging level 2 (Basic) include the following information, and any level above 1 (Errors) logs this information:
- Action — For objects, this is
Created,Deleted, orDeletePending. ForMEMPTRs, this isAllocatedorDeallocated.- Object type — For example,
BUFFER,SERVER, orBUTTON.- Handle value —
Handle:followed by the integer value of the handle (0forMEMPTRs).- Routine name — The name of the
.por.wfile or method where this application created or destroyed the object.- Line number — The line number in the
.por.wfile or method where the application created or destroyed the object. This line number comes from the debugger listing file. When OpenEdge creates aSOCKETobject implicitly, the line number always is0.For other implicitly created objects, the line number is meaningful. For example, for an
ASYNC-REQUESThandle, it is the line number of theRUNstatement.IMPLICIT— Appears when OpenEdge created the object implicitly.POOLDEL— Appears when OpenEdge deleted the object because it was deleting the object's object pool.- Other — For specific object types, the log output line includes other attributes:
Name:followed by the object name. ForBUFFERobjects, theNameattribute is the name of the table associated with the buffer, so the entry containsTable:followed by the table name.
TEMP-TABLEobjects do not show theNameattribute. This information is not available when the application creates theTEMP-TABLEobject, but only after it invokes theTEMP-TABLE-PREPAREmethod.- The allocation’s size, for
MEMPTRs.- The procedure name for
PROCEDUREobjects.- The name of the procedure associated with an
ASYNC-REQUEST-HANDLEobject (that is, the procedure that ran asynchronously).- The
Labelattribute forBROWSE-COLUMNobjects, if there is noNameattribute (for calculated fields, for example). Also, to identify the browse parenting the column, the log entry includes theBROWSEname orBROWSEhandle ID.Here are sample
BASIClog entries (with headers suppressed):
Verbose logging level (3)
Setting the logging level to 3 (Verbose), also logs object-pool related information.
First, level 3 adds pool information to the log entry every time a dynamic object is created that is being tracked, except
PROCEDURE,MEMPTR, andBROWSE-COLUMNobjects.PROCEDUREs always are in theSessionpool.MEMPTRandLONGCHARmemory is not stored in a pool. The log entry forBROWSE-COLUMNobjects contains the browse name or handle ID information in the creation log entry (as described above), so you can refer back to the browse creation entry to find out which pool contains the object.Second, level 3 logs an extra entry every time a object-pool is created or deleted. This helps identify when OpenEdge deletes an object in the course of deleting a object pool, as opposed to when the application deletes the object explicitly.
There are two formats for the messages generated at level
VERBOSE, depending on the action:
- Format 1 — OpenEdge logs the following when creating or deleting an object pool:
- Action — This is
CreatingPoolorDeletingPool.- Pool name — This is <
unnamed>,<Session Pool>, or the name of a named pool.PERS— This indicates the pool is persistent. OpenEdge does not log this forDeletingPoolactions.Note: The line number can be the string- Routine name and line number — The name of the
.por.wfile or method where OpenEdge created or destroyed the pool, and the line number. The line number comes from the debugger listing file.IMPLICITfor an unnamed widget pool if the pool is created implicitly during the instantiation of a user-defined object.FROMroutine-name—routine-nameis the name of the.por.wfile or method where OpenEdge created the object pool. OpenEdge logs this only forDeletepool.Here are sample log entries (with the headers suppressed):
- Format 2 — OpenEdge adds pool information to the Basic log entries when creating and deleting dynamic objects. OpenEdge logs this additional information:
- Pool name — This is
<unnamed>,<Session Pool>, or the name of a named pool.FROMroutinename—routinenameis the name of the.por.wfile or method that created the object pool. OpenEdge logs this only when the pool is not persistent and not theSessionPool.Here are some sample log entries (with headers suppressed):
The following excerpt is from a log file (with headers suppressed) showing an example of how the pool information relates to the other messages:
|
Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |